From cbf6d898fb44589a12d8df49a005291259311d45 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 16 Nov 2006 09:57:45 +0000 Subject: [PATCH] Provide a fast path returning NULL when the limit is set to 0. 2006-11-16 Emmanuele Bassi * gtk/gtkrecentmanager.c: Provide a fast path returning NULL when the limit is set to 0. * gtk/gtkrecentchooserdefault.c: * gtk/gtkrecentchoosermenu.c: Add the same fast path inside the RecentChooser implementation; add a check in the list clamping code. (#373466 and duplicates) --- ChangeLog | 10 ++++++++++ gtk/gtkrecentchooserdefault.c | 6 +++++- gtk/gtkrecentchoosermenu.c | 6 +++++- gtk/gtkrecentmanager.c | 3 +++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c5ccd61a8..4b2d6bd8a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-11-16 Emmanuele Bassi + + * gtk/gtkrecentmanager.c: Provide a fast path returning + NULL when the limit is set to 0. + + * gtk/gtkrecentchooserdefault.c: + * gtk/gtkrecentchoosermenu.c: Add the same fast path + inside the RecentChooser implementation; add a check + in the list clamping code. (#373466 and duplicates) + 2006-11-15 Matthias Clasen * modules/printbackends/cups/gtkprintbackendcups.c (cups_printer_get_options): diff --git a/gtk/gtkrecentchooserdefault.c b/gtk/gtkrecentchooserdefault.c index fe8575e285..9a64f80d13 100644 --- a/gtk/gtkrecentchooserdefault.c +++ b/gtk/gtkrecentchooserdefault.c @@ -1302,8 +1302,10 @@ gtk_recent_chooser_default_get_items (GtkRecentChooser *chooser) return NULL; limit = gtk_recent_chooser_get_limit (chooser); - sort_type = gtk_recent_chooser_get_sort_type (chooser); + if (limit == 0) + return NULL; + sort_type = gtk_recent_chooser_get_sort_type (chooser); switch (sort_type) { case GTK_RECENT_SORT_NONE: @@ -1335,6 +1337,8 @@ gtk_recent_chooser_default_get_items (GtkRecentChooser *chooser) GList *clamp, *l; clamp = g_list_nth (items, limit - 1); + if (!clamp) + return items; l = clamp->next; clamp->next = NULL; diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c index a72d60e04b..8413633a07 100644 --- a/gtk/gtkrecentchoosermenu.c +++ b/gtk/gtkrecentchoosermenu.c @@ -607,8 +607,10 @@ gtk_recent_chooser_menu_get_items (GtkRecentChooser *chooser) return NULL; limit = gtk_recent_chooser_get_limit (chooser); - sort_type = gtk_recent_chooser_get_sort_type (chooser); + if (limit == 0) + return NULL; + sort_type = gtk_recent_chooser_get_sort_type (chooser); switch (sort_type) { case GTK_RECENT_SORT_NONE: @@ -641,6 +643,8 @@ gtk_recent_chooser_menu_get_items (GtkRecentChooser *chooser) GList *clamp, *l; clamp = g_list_nth (items, limit - 1); + if (!clamp) + return items; l = clamp->next; clamp->next = NULL; diff --git a/gtk/gtkrecentmanager.c b/gtk/gtkrecentmanager.c index aadeb60418..24baf5d772 100644 --- a/gtk/gtkrecentmanager.c +++ b/gtk/gtkrecentmanager.c @@ -1322,6 +1322,9 @@ gtk_recent_manager_get_items (GtkRecentManager *manager) priv = manager->priv; if (!priv->recent_items) return NULL; + + if (priv->limit == 0) + return NULL; uris = g_bookmark_file_get_uris (priv->recent_items, &uris_len); for (i = 0; i < uris_len; i++) -- 2.30.2